
INCLUDE_PATH := include
HEADERS := $(wildcard $(INCLUDE_PATH)/*.h)
SOURCES := main.c $(wildcard parent/*.c) $(wildcard child/*.c)
OBJECTS := $(SOURCES:.c=.o)
PROG_NAME := example
CFLAGS += -Wall

.PHONY: all clean run

all: $(PROG_NAME)

$(PROG_NAME): $(OBJECTS)
	gcc $(CFLAGS) -o $@ $^

%.o: %.c $(HEADERS)
	gcc -c $(CFLAGS) -o $@ -I $(INCLUDE_PATH) $(filter %.c, $^)

clean:
	@rm -f $(OBJECTS) $(PROG_NAME)

run:
	@./$(PROG_NAME)

